#ifndef _AW9523B_CONFIG_H_
#define _AW9523B_CONFIG_H_

#include "board.h"


// AW9523B 读写使用器件地址最低位进行区分
// 以下是 AD0 AD1 均接高电平时的器件地址

#define _AW9523B_WRITE_DEV_ADDR		0xB6
#define _AW9523B_READ_DEV_ADDR		0xB7

// 以下是执行 AW9523B_Init 后的初始状态定义，后续可以随时修改

// P0输出时的默认状态
#define _AW9523B_P0_ODR_DEFAULT         0xBF  //1011 1111

// P1输出时的默认状态
#define _AW9523B_P1_ODR_DEFAULT         0X8F//0b10001111

// P0作为GPIO时的方向。0-输出，1-输入。
#define _AW9523B_P0_DIR_DEFAULT         0X1C//0b00011100

// P1作为GPIO时的方向。0-输出，1-输入。
#define _AW9523B_P1_DIR_DEFAULT         0X00//0b00000000

// P0模式。0-LED恒流模式，1-GPIO模式。
// P00 P01 恒流模式时的内阻更低，压降与功耗更低，非常适合LCD背光。
#define _AW9523B_P0_MODE_DEFAULT        0XFC//0b11111100

// P1模式。0-LED恒流模式，1-GPIO模式。
// P10~P13 恒流模式时的内阻更低，压降与功耗更低，非常适合LCD背光。
#define _AW9523B_P1_MODE_DEFAULT        0XF0//0b11110000

// P0使能电平变化中断。0-中断使能，1-中断不使能.
// 使能后将通过芯片INT管脚发送中断信号（低电平）
// 管脚输入信号有8us消抖处理
#define _AW9523B_P0_INTE_DEFAULT        0XE3//0b11100011

// P1使能电平变化中断。0-中断使能，1-中断不使能.
// 使能后将通过芯片INT管脚发送中断信号（低电平）
// 管脚输入信号有8us消抖处理
#define _AW9523B_P1_INTE_DEFAULT        0XFF//0b11111111

// GPIO输出时，0-P0口为Open-Drain模式，1-P0口为Push-Pull模式。
#define _AW9523B_P0_GPIO_PP     0     

// 256步调光最大电流选择，0-37mA,1-27mA,2-18mA,3-9mA.
#define _AW9523B_I_MAX          3

// 自动读取IO输入值功能设置
// 0-关闭自动读取功能，将只在中断发生（_AW9523B_EvIoInt被调用）后立即读取更新缓存。
// 其他值代表自动读取更新的间隔时间，单位ms。
#define _AW9523B_AUTO_READ      10


// 需要的API

// IIC初始化
#define _AW9523B_IICInit()

// IIC总线开始写入一个字节
// 要求操作完毕后调用 _AW9523B_EvIICTransDown
#define _AW9523B_IICStartWrite(dev_addr, reg_addr, one_byte_data) HalI2cMasterWrite(AP_I2C0, dev_addr, reg_addr,1, &one_byte_data, 1)

// IIC总线开始读取一个字节
// 要求操作完毕后调用 _AW9523B_EvIICTransDown
#define _AW9523B_IICStartRead(dev_addr, reg_addr, buff_ptr) HalI2cMasterRead(AP_I2C0, dev_addr, reg_addr,1, buff_ptr, 1)

// 设置RST(复位)管脚电平
#define _AW9523B_SetRstLevel(new_level) Board_SetExRstLevel(new_level)


#endif
